package com.quanyan.club.service;

import com.quanyan.activity.entity.ActivityInfo;
import com.quanyan.activity.response.RespGroupInfo;
import com.quanyan.api.APIResponse;
import com.quanyan.club.entity.db.*;
import com.quanyan.club.entity.vo.req.ReqClubActivity;
import com.quanyan.club.entity.vo.req.ReqClubActivityCondition;
import com.quanyan.club.entity.vo.req.ReqSignUpDetail;
import com.quanyan.club.entity.vo.resp.RespClubActivity;
import com.quanyan.club.entity.vo.resp.RespSearchActivity;
import com.quanyan.common.Plugin.PageObj;
import com.quanyan.place.entity.PlaceDubboProvider;
import com.quanyan.search.entity.response.ActivitySearchResponse;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by yue.yuan on 2016/11/30.
 */
public interface ActivitySupportService {

    void afterSaveActivity(RespClubActivity respClubActivity, TbClub tbClub, boolean isFirst);

    void afterUpdateActivity(RespClubActivity respClubActivity);

    void afterReSuspendActivity(RespClubActivity respClubActivity);

    void afterSuspendActivity(int activityId, int clubId);

    void afterAppraise(TbClubActivity clubActivity, TbActivity activity, int userId, double addScore);

    void afterCancelActivity(RespClubActivity respClubActivity,int larkAppId);

    void afterCreateWeekRange(RespClubActivity respClubActivity);

    void afterSignUpActivity(RespClubActivity respClubActivity, int currentUserId,
                             String address, String mobile, String clubName, int larkAppId);

    void afterRefundActivity(RespClubActivity respClubActivity,
                             int orderUid, String businessOrderNo, int orderId);

    void afterSettlementActivity(boolean isAuto, int userId,
                                 RespClubActivity respClubActivity, List<TbOrder> needRefundOrders);

    void addActivityIndex4Solr(RespClubActivity respClubActivity);

    void pushActivityUserCenterTaskMsg(int uid, Integer taskId);

    void submitAutoAppraiseJob(int activityId);

    void pushNotify(RespClubActivity respClubActivity, Integer uid, Integer type, List<Integer> toUid);

    APIResponse validAppraise(TbActivity tbActivity, TbClubActivity tbClubActivity,
                              int userId, String businessOrderNo);

    String createGroup(String activityName,Integer plannerUid, String posterUrl);

    void getActivityPlace(RespClubActivity respClubActivity);

    PlaceDubboProvider getActivityPlace(Integer placeId);

    void getActivityPlaces(List<RespClubActivity> respClubActivities, Double lng, Double lat);

    void setRequireFields(String requireFields, ReqSignUpDetail reqSignUpInfo, TbSignUser tbSignUser);

    List<TbActivity> activityAfterWeek(int clubId);

    int countActivityAfterWeek(int clubId);

    List<RespSearchActivity> searchActivityWithPlaceInfo(
            List<ActivitySearchResponse> list, List<Integer> clubIdList, List<Integer> removeActivityIds);

    Map<Integer, String> getCategoryMap();

    void isClubTask(RespClubActivity respClubActivity);

    RespSearchActivity convertRespClubActivityToSearch(RespClubActivity respClubActivity);

}
